Learn in 10 minutes

Learn in 10 minutes

تعلم بيرل في 10 دقائق

لغة برمجة

بيرل هي لغة برمجة عالية المستوى وقوية معروفة بقدراتها في معالجة النصوص ومرونتها. تم تطويرها في الأصل لمهام إدارة الأنظمة، تطورت بيرل لتصبح لغة متعددة الاستخدامات تُستخدم في تطوير الويب وبرمجة الشبكات والمزيد. يغطي هذا البرنامج التعليمي المفاهيم الأساسية في بيرل لمساعدتك على تعلم اللغة بسرعة.

1. كتابة أول برنامج بيرل

لنبدأ ببرنامج بسيط. أنشئ ملفًا باسم hello.pl وأدخل الكود التالي:

#!/usr/bin/perl
print "Hello, World!\n";

احفظ الملف وقم بتشغيل الأمر التالي في الطرفية:

perl hello.pl

سيكون الناتج:

Hello, World!

يوضح هذا البرنامج البسيط وظيفة الإخراج الأساسية في بيرل. تُستخدم الدالة print لعرض المعلومات النصية في وحدة التحكم.

2. البنية الأساسية

بنية بيرل مرنة ومعبرة، مع العديد من الميزات المميزة.

# هذا تعليق
print "Hello, World!\n";

القواعد الأساسية للبنية في بيرل:

  • التعليقات: تبدأ التعليقات ذات السطر الواحد بـ #
  • الجمل: تنتهي بفاصلة منقوطة ;
  • سطر Shebang: #!/usr/bin/perl في أعلى ملفات السكريبت
  • المتغيرات: استخدم أحرفًا خاصة للدلالة على أنواع المتغيرات ($, @, %)
  • علامات الاقتباس للنصوص: يمكن استخدام علامات الاقتباس المفردة ' أو المزدوجة "

3. المتغيرات وأنواع البيانات

في بيرل، المتغيرات ذات أنواع ديناميكية وتستخدم أحرفًا خاصة للدلالة على نوعها.

المتغيرات القياسية (قيم مفردة):

$name = "Alice";
$age = 25;
$temperature = 36.5;
$is_active = 1;  # 1 للصواب، نص فارغ للخطأ

متغيرات المصفوفات (قوائم مرتبة):

@fruits = ("apple", "banana", "cherry");
@numbers = (1, 2, 3, 4, 5);

متغيرات الهاش (أزواج مفتاح-قيمة):

%person = (
    "name" => "John",
    "age" => 30,
    "city" => "New York"
);

3.1 المتغيرات القياسية

تحتوي المتغيرات القياسية على قيم مفردة مثل النصوص أو الأرقام أو المراجع.

# عمليات النصوص
$text = "Perl Programming";
print length($text);        # طول النص
print uc($text);            # التحويل إلى أحرف كبيرة
print lc($text);            # التحويل إلى أحرف صغيرة
print substr($text, 0, 4);  # استخراج جزء من النص

# العمليات الرقمية
$x = 10;
$y = 3;
print $x + $y;    # 13
print $x - $y;    # 7
print $x * $y;    # 30
print $x / $y;    # 3.333...
print $x % $y;    # 1 (الباقي)

3.2 متغيرات المصفوفات

المصفوفات هي مجموعات مرتبة يمكنها الاحتفاظ بقيم متعددة.

@colors = ("red", "green", "blue");

# الوصول إلى عناصر المصفوفة
print $colors[0];     # "red" (استخدم $ للعنصر المفرد)
print $colors[1];     # "green"
print $colors[-1];    # "blue" (آخر عنصر)

# عمليات المصفوفات
push(@colors, "yellow");     # إضافة للنهاية
pop(@colors);                # إزالة من النهاية
shift(@colors);              # إزالة من البداية
unshift(@colors, "purple");  # إضافة للبداية

# دوال المصفوفات
print scalar(@colors);       # عدد العناصر
print $#colors;              # الفهرس الأخير

3.3 متغيرات الهاش

الهاشات هي مجموعات من أزواج المفتاح-قيمة.

%student = (
    name => "Alice",
    age => 20,
    major => "Computer Science"
);

# الوصول إلى عناصر الهاش
print $student{"name"};     # "Alice"
print $student{age};        # 20

# عمليات الهاش
$student{"gpa"} = 3.8;     # إضافة زوج مفتاح-قيمة جديد
delete $student{"age"};    # إزالة زوج مفتاح-قيمة

# دوال الهاش
@keys = keys %student;      # الحصول على جميع المفاتيح
@values = values %student;  # الحصول على جميع القيم

4. التحكم في التدفق

توفر بيرل عدة جمل للتحكم في التدفق لإدارة تنفيذ البرنامج.

4.1 جمل if

تقيِّم جملة if شرطًا وتنفذ كتلة التعليمات الخاصة بها إذا كان الشرط صحيحًا.

$age = 20;
if ($age >= 18) {
    print "Adult\n";
} elsif ($age >= 13) {
    print "Teen\n";
} else {
    print "Child\n";
}

# if بسطر واحد
print "Adult\n" if $age >= 18;

4.2 جمل unless

unless هو عكس if - ينفذ عندما يكون الشرط خاطئًا.

$age = 15;
unless ($age >= 18) {
    print "Not an adult\n";
}

# unless بسطر واحد
print "Not an adult\n" unless $age >= 18;

4.3 الحلقات

تدعم بيرل عدة تركيبات للحلقات.

حلقة while:

$count = 0;
while ($count < 5) {
    print "Count: $count\n";
    $count++;
}

حلقة for:

for ($i = 0; $i < 5; $i++) {
    print "i = $i\n";
}

حلقة foreach:

@fruits = ("apple", "banana", "cherry");
foreach $fruit (@fruits) {
    print "Fruit: $fruit\n";
}

# استخدام المتغير الافتراضي $_
foreach (@fruits) {
    print "Fruit: $_\n";
}

last و next:

foreach (1..10) {
    last if $_ == 5;     # الخروج من الحلقة
    next if $_ % 2 == 0; # تخطي الأرقام الزوجية
    print "$_\n";        # الناتج: 1, 3
}

5. الدوال الفرعية

تُعرَّف الدوال الفرعية في بيرل باستخدام الكلمة المفتاحية sub.

تعريف الدالة الفرعية الأساسية:

sub greet {
    my $name = shift;
    return "Hello, $name!";
}

# استدعاء الدالة الفرعية
$message = greet("John");
print $message;

استخدام المعاملات:

sub add_numbers {
    my ($a, $b) = @_;
    return $a + $b;
}

$result = add_numbers(5, 3);
print "Sum: $result\n";

المعاملات الافتراضية:

sub greet {
    my ($name, $greeting) = @_;
    $greeting = "Hello" unless defined $greeting;
    return "$greeting, $name!";
}

print greet("Alice");          # "Hello, Alice!"
print greet("Bob", "Hi");      # "Hi, Bob!"

6. التعبيرات النمطية

تشتهر بيرل بقدراتها القوية في التعبيرات النمطية.

مطابقة الأنماط الأساسية:

$text = "Hello, World!";

if ($text =~ /Hello/) {
    print "Found 'Hello'\n";
}

# مطابقة غير حساسة لحالة الأحرف
if ($text =~ /world/i) {
    print "Found 'world' (case-insensitive)\n";
}

الاستبدال:

$text = "I like cats and cats are cute";
$text =~ s/cats/dogs/g;  # استبدال جميع التكرارات
print "$text\n";         # "I like dogs and dogs are cute"

استخراج المطابقات:

$email = "[email protected]";
if ($email =~ /(\w+)@(\w+\.\w+)/) {
    print "Username: $1\n";      # "user"
    print "Domain: $2\n";        # "example.com"
}

7. عمليات الملفات

توفر بيرل طرقًا بسيطة لقراءة وكتابة الملفات.

قراءة الملفات:

# قراءة الملف بالكامل
open(my $fh, '<', 'example.txt') or die "Cannot open file: $!";
my $content = do { local $/; <$fh> };
close($fh);
print $content;

# قراءة سطر بسطر
open(my $fh, '<', 'example.txt') or die "Cannot open file: $!";
while (my $line = <$fh>) {
    print $line;
}
close($fh);

كتابة الملفات:

# الكتابة إلى ملف
open(my $fh, '>', 'output.txt') or die "Cannot open file: $!";
print $fh "Hello, Perl!\n";
close($fh);

# الإضافة إلى ملف
open(my $fh, '>>', 'output.txt') or die "Cannot open file: $!";
print $fh "Appending new content.\n";
close($fh);

8. الدوال المدمجة

تأتي بيرل مع العديد من الدوال المفيدة المدمجة.

دوال النصوص:

$text = "  Perl Programming  ";
print length($text);        # طول النص
print uc($text);            # التحويل إلى أحرف كبيرة
print lc($text);            # التحويل إلى أحرف صغيرة
print substr($text, 0, 4);  # استخراج جزء من النص
print index($text, "Prog"); # إيجاد موضع جزء النص

دوال المصفوفات:

@numbers = (3, 1, 4, 1, 5, 9, 2);
print join(", ", sort @numbers);      # "1, 1, 2, 3, 4, 5, 9"
print join(", ", reverse @numbers);   # "2, 9, 5, 1, 4, 1, 3"

# تصفية المصفوفة
@filtered = grep { $_ > 3 } @numbers;
print join(", ", @filtered);          # "4, 5, 9"

# تحويل المصفوفة
@doubled = map { $_ * 2 } @numbers;
print join(", ", @doubled);           # "6, 2, 8, 2, 10, 18, 4"

دوال الهاش:

%person = (name => "Alice", age => 25, city => "New York");
@keys = keys %person;      # الحصول على جميع المفاتيح
@values = values %person;  # الحصول على جميع القيم

# التحقق من وجود مفتاح
if (exists $person{age}) {
    print "Age exists\n";
}

9. وحدات بيرل

تمتلك بيرل نظامًا غنيًا من الوحدات المتاحة عبر CPAN.

استخدام الوحدات الأساسية:

use strict;
use warnings;
use Data::Dumper;

%data = (name => "Bob", age => 30);
print Dumper(\%data);  # طباعة هيكل البيانات بشكل جميل

تثبيت واستخدام وحدات CPAN:

# تثبيت وحدة من CPAN
cpan install JSON
use JSON;

# تحليل JSON
$json_string = '{"name": "Alice", "age": 25}';
$person = decode_json($json_string);
print $person->{name};  # "Alice"

# توليد JSON
$person_hash = { name => "Bob", age => 30 };
$json_output = encode_json($person_hash);
print $json_output;  # {"name":"Bob","age":30}

10. دليل أسلوب بيرل

تمتلك بيرل اتفاقيات مجتمعية تعزز كتابة كود نظيف وقابل للقراءة.

المسافات البادئة: استخدم 4 مسافات للمسافات البادئة.

تسمية المتغيرات:

  • استخدم أسماء وصفية
  • اتبع اصطلاح snake_case
  • استخدم أسماء متغيرات ذات معنى

تنظيم الكود:

  • استخدم use strict; و use warnings; في أعلى السكريبتات
  • عرِّف المتغيرات باستخدام my لتحديد النطاق
  • استخدم أسماء دوال فرعية ذات معنى

التوثيق:

  • استخدم POD (Plain Old Documentation) لتوثيق الكود
  • أضف تعليقات للمنطق المعقد

تجعل مرونة بيرل وقدراتها القوية في معالجة النصوص منها خيارًا ممتازًا لمهام إدارة الأنظمة وتطوير الويب ومعالجة البيانات. يستمر نظامها الغني من الوحدات ودعم مجتمعها القوي في جعلها ذات صلة في بيئات البرمجة الحديثة.